#include "2pndp.h"

#ifndef NULL
	#define NULL ((void *)0)
#endif

#ifndef QNT_MELHORES

	#define QNT_MELHORES 3 

	typedef struct{
		t_aresta *arestas;
		int custo;	
		int qntArestas;
	} SolucaoBoa;


	typedef struct{
		SolucaoBoa *solucoes;
		int conta;
	}Melhores;

	typedef struct{
		t_aresta solucao[MAX_DEMANDA + 1][3];
		int custo;
	} SolucaoPool;


	typedef struct{
		SolucaoPool *solucoes;
		int tamanho;
		int tamanho_max;
		int pior_indice;
	}PoolMine;

	PoolMine* initPool(int tamanho_max);

	int verifica_insercao(PoolMine *pool,int custo);

	void freePool(PoolMine *pool);

	void inserir_solucao_pool(PoolMine *pool,t_aresta solucao[MAX_DEMANDA + 1][3],int custo,int ndemandas);

	void printPool(PoolMine *pool);

	Melhores* gera_melhores(PoolMine *pool,int ndemandas);

	void freeMelhores(Melhores *melhores);
#endif
